package com.aviatorscript.avitorscriptmust.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.googlecode.aviator.Expression;
import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * AviatorScript字段校验配置实体类
 *
 * @author system
 */
@Data
@Accessors(chain = true)
@TableName("field_validation_config")
public class FieldValidationConfig {
    
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 规则名称（如：订单ID校验、商品价格校验）
     */
    @TableField("rule_name")
    private String ruleName;
    
    /**
     * 应用的类名（如：CreateOrderDTO）
     */
    @TableField("class_name")
    private String className;
    
    /**
     * 字段路径（支持嵌套，如：cartList[*].itemList[*].itemPrice）
     */
    @TableField("field_path")
    private String fieldPath;
    
    /**
     * AviatorScript校验脚本内容
     */
    @TableField("script_content")
    private String scriptContent;
    
    /**
     * 脚本版本号
     */
    @TableField("script_version")
    private String scriptVersion;
    
    /**
     * 规则描述
     */
    private String description;
    
    /**
     * 校验失败时的错误信息
     */
    @TableField("error_message")
    private String errorMessage;
    
    /**
     * 执行优先级，数字越小优先级越高
     */
    private Integer priority;
    
    /**
     * 状态：1=启用，0=禁用
     */
    private Integer status;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
    
    /**
     * 创建人
     */
    private String creator;
    
    /**
     * 编译后的表达式对象（不存数据库，仅用于缓存）
     */
    @TableField(exist = false)
    private Expression compiledExpression;
} 